Video conferencing allows conference participants who are at different locations to participate in a conference. Typically, each conference participant has a computer-based video conferencing system that includes a video camera, a microphone, a display device, and a speaker. The video conferencing system of a conference participant captures the video and audio of that conference participant using the video camera and microphone and transmits the video and audio to the video conferencing systems of the other conference participants. When a video conferencing system receives the video and audio from the other conference participants, it presents the video on the display device and outputs the audio to the speaker. A video conferencing system may display each video in a different window on the display device or in a different area of a window. Thus, the conference participants can view the video and hear the audio of the other conference participants.
To support video and audio conferencing, the participant computer systems need to be interconnected in some way. Each connection has a video channel and an audio channel between participant computer systems. Each channel includes a send stream and a receive stream for sending and receiving content of the channel. Each endpoint of a channel includes a source and a sink that are connected to the streams of the channel. For example, the source and the sink of an audio channel are microphones and speakers, respectively. For both streams of an audio channel, a microphone is connected at one endpoint and a speaker is connected at the other endpoint.
Each endpoint of each stream of a channel may have a media stack of components that implement the functions of the stream. The components of the media stack of an audio channel for a source may receive audio content in PCM format, convert the audio content from PCM format to G.722 format, packetize the audio content that is in the G.722 format, and transmit the packetized content to the sink at the other endpoint. The components of a media stack of an audio channel for a sink may receive packetized audio content from the source at the other endpoint, de-packetize the received content, convert the de-packetized content from G.722 format to PCM format, and provide the content in PCM format to the local sink.
The existing channel structure allows only actual devices (e.g., microphones and speakers) to be sources and sinks of a channel. If, for example, a developer wants to intercept and record the content that is received at the sink, then the sink device driver will need to be modified to perform the intercepting and recording. In addition, if a developer wants to provide additional content not provided by a device, then the developer will also need to modify a source device driver. Each developer who wants to provide additional functions will need to modify the drivers accordingly. It would be desirable to have a technique that would allow for the intercepting of content and providing of content in a uniform manner to make it easier for developers to intercept content and provide additional content.